package com.education.welco.service;

import com.education.welco.pojo.STheoryClassroom;
import com.education.welco.pojo.TClass;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 理论课堂 服务层
 *
 * @author d
 * @date 2020-05-11
 */
public interface ISTheoryClassroomService {

    /**
     * 查询理论课堂信息
     *
     * @param userId 理论课堂ID
     * @return 理论课堂信息
     */
    Integer selectSTheoryClassroomCount(Integer userId);

    /**
     * 查询理论课堂信息
     *
     * @param id 理论课堂ID
     * @return 理论课堂信息
     */
    STheoryClassroom selectSTheoryClassroomById(Integer id);


    /**
     * 查询理论课堂信息
     *
     * @param id 理论课堂ID
     * @return 理论课堂信息
     */
    STheoryClassroom selectSTheoryClassroomByIdOther(Integer id);

    /**
     * 查询理论课堂列表
     *
     * @param sTheoryClassroom 理论课堂信息
     * @return 理论课堂集合
     */
    List<STheoryClassroom> selectSTheoryClassroomList(STheoryClassroom sTheoryClassroom);

    /**
     * 为解绑班级的设备查找当前时刻下该班级是否有直播课
     *
     * @param classroomId 班级id
     * @param nowDate     当前时刻
     * @return
     */
    List<STheoryClassroom> selectSTheoryClassroomListForNowLive(Integer classroomId, Date nowDate);

    /**
     * 查询理论课堂列表
     *
     * @param sTheoryClassroom 理论课堂信息
     * @return 理论课堂集合
     */
    List<STheoryClassroom> selectSTheoryClassroomListOther(STheoryClassroom sTheoryClassroom);


    List<STheoryClassroom> selectPaikeList(STheoryClassroom sTheoryClassroom);


    /**
     * 查询理论课堂列表
     *
     * @param map 理论课堂信息
     * @return 理论课堂集合
     */
    List<STheoryClassroom> selectSTheoryClassroomListOtherTwo(Map<String, Object> map);

    /**
     * 查询理论课堂列表
     *
     * @param sTheoryClassroom 理论课堂信息
     * @return 理论课堂集合
     */
    List<STheoryClassroom> selectSTheoryClassroomListByClassroomAndTime(STheoryClassroom sTheoryClassroom);

    /**
     * 查询理论课堂列表
     *
     * @param sTheoryClassroom 理论课堂信息
     * @return 理论课堂集合
     */
    List<Integer> selectSTheoryClassroomListByTime(STheoryClassroom sTheoryClassroom);

    /**
     * 新增理论课堂
     *
     * @param sTheoryClassroom 理论课堂信息
     * @return 结果
     */
    int insertSTheoryClassroom(STheoryClassroom sTheoryClassroom);

    /**
     * 修改理论课堂
     *
     * @param sTheoryClassroom 理论课堂信息
     * @return 结果
     */
    int updateSTheoryClassroom(STheoryClassroom sTheoryClassroom);

    /**
     * 删除理论课堂信息
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    int deleteSTheoryClassroomByIds(String ids);

    /**
     * 删除理论课堂信息
     *
     * @param id 需要删除的数据ID
     * @return 结果
     */
    int deleteSTheoryClassroomById(Integer id);

    /**
     * @param theoryClassroom
     * @return
     */
    List<TClass> selectSTheoryClassroomListByTimeAndIn(STheoryClassroom theoryClassroom);

    /**
     * @param catalogId
     * @return
     */
    Integer selectClassStuNumByCatalogId(Integer catalogId);

    /**
     * 根据课程id获取相关联的班级id集合
     *
     * @param catalogId
     * @return
     */
    List<Integer> selectClassIdsByCatalogId(Integer catalogId);

    /**
     * 查找老师所带的课堂
     *
     * @param teaUserId
     * @return
     */
    List<STheoryClassroom> selectTeaCourseListByTeaId(Integer teaUserId);
}